\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{dim. avril 14 17:07:49 CEST 2013}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={OpenSSL - ts},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Outil de Time Stamping Authority (TSA) client/serveur},
CreationDate={D:20130414170749},
ModDate={D:20130414170749},
Keywords={PKI;sécurité;chiffrement;certificats}
}}
\begin{document}
 
\begin{center}
{\Huge OpenSSL - ts }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Outil de Time Stamping Authority (TSA) client/serveur}
 
\vspace{10mm}
 
\hspace{1mm}  \textbf{ts} est un outil de base TSA client/serveur comme spécifié dans la RFC3161. Un TSA peut être une partie d’une PKI et son rôle est de fournir une preuve à long terme de l’existence d’un horodatage avant une date particulière. Brève description du protocole:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{6mm} 1.]{Le client TSA calcule un hash 'one-way' pour un fichier de données et l’envoie au TSA.}
\item[\hspace{6mm} 2.]{Le TSA attache la date et l’heure courante au hash reçu, signe le tout et renvoie ce token au client.}
\item[\hspace{6mm} 3.]{Le client TSA reçoit le token et vérifie la signature. Il vérifie également si le token contient le même hash qu’il avait envoyé au TSA.}
\end{description}
 
\vspace{1cm}{\huge Génération de requête et Time Stamp }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -query]{Permet de générer une requête avec les options suivantes:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} -rand file:file...]{Fichier contenant les données pour le générateur pseudo-aléatoire, plusieurs fichiers peuvent être utilisés}
\item[\hspace{6mm} -config configfile]{Fichier de configuration à utiliser. Seul la section OID est utilisée (remplace la variable OPENSSL\_CONF)}
\item[\hspace{6mm} -data file\_to\_hash]{Fichier de donnée pour lequel la requête doit être crée.}
\item[\hspace{6mm} -digest digest\_bytes]{Permet de spécifier l’empreinte du message sans le fichier de donnée, au format hexadécimal}
\item[\hspace{6mm} -md2|-md4|-md5|-sha|-sha1|-mdc2|-ripemd160|...]{Message digest à appliquer au fichier de données}
\item[\hspace{6mm} -policy object\_id]{Stratégie que le client s’attend à ce que le TSA utilise pour créer le time stamp. Sous forme OID numérique ou nom IOD.}
\item[\hspace{6mm} -no\_nonce]{Aucun nonce n’est utilisé, sinon un nombre pseudo-aléatoire 64 bits est inclus dans la requête. nonce est recommandé.}
\item[\hspace{6mm} -cert]{Le TSA doit inclure son certificat de signature dans la réponse}
\item[\hspace{6mm} -in request.tsq]{Spécifie une précédente requête time stamp en DER à afficher en sortie}
\item[\hspace{6mm} -out request.tsq]{Nom du fichier de sortie pour écrire la requête.}
\item[\hspace{6mm} -text]{Affiche la sortie compréhensible au lieu du DER.}
\end{description}
 
\vspace{1cm}{\huge Génération d'une réponse Time Stamp }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -reply]{Créer une réponse time stamp, incluant le status de la réponse et le token lui-même, avec les options suivantes:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} -config configfile]{Fichier de configuration à utiliser. (remplace la variableOPENSSL\_CONF)}
\item[\hspace{6mm} -section tsa\_section]{Nom de la section contenant les paramètres pour la génération de la réponse}
\item[\hspace{6mm} -queryfile request.tsq]{Nom du fichier contenant la requête timestamp encodée en DER}
\item[\hspace{6mm} -passin password\_src]{Source du mot de passe pour la clé provée du TSA}
\item[\hspace{6mm} -signer tsa\_cert.pem]{Certificat du signataire du TSA au format PEM. Doit avoir eactement un extension d’utilisation de clé ’timeStamping’ et doit être critique}
\item[\hspace{6mm} -inkey private.pem]{clé privée du signataire du TSA au format PEM}
\item[\hspace{6mm} -chain certs\_file.pem]{Certification au format PEM à inclure dans la répnose en plus du certificat u signataire}
\item[\hspace{6mm} -policy object\_id]{Stratégie par défaut à utiliser pour la réponse à moins que le client en demande une. (nom ou OID)}
\item[\hspace{6mm} -in response.tsr]{Spécifie une réponse timestamp créé précédemment ou un tocken timestamp au format DER qui sera écrit dns le fichier de sortie. Ne requière pas de requête. Permet d’examiner le contenu d’une réponse}
\item[\hspace{6mm} -token\_in]{avec -in, indique que l’entrée est un otken timestamp DER (ContentInfo) au lieu d’une réponse (TimeStampResp)}
\item[\hspace{6mm} -out response.tsr]{Fichier de sortie}
\item[\hspace{6mm} -token\_out]{La sortie est un timestamp token (ContentInfo) au lieu d’une réponse (TimeStampResp)}
\item[\hspace{6mm} -text]{Sort au format human-readable au lieu d’un DER}
\item[\hspace{6mm} -engine id]{ts va tenter d’obtenir une référence fonctionnelle du moteur spécifié.}
\end{description}
 
\vspace{1cm}{\huge Vérification de réponse Time Stamp }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} -verify]{permet de vérifier une réponse ou un jeton, il accèpte les options suivante:}
\end{description}
 
\begin{description} \normalsize
\item[\hspace{6mm} -data file\_to\_hash]{La réponse ou le token doit être vérifié avec. Ce fihcier est hashé avec le message digest spécifié dans le token.}
\item[\hspace{6mm} -digest digest\_bytes]{La réponse ou le token doit être vérifié avec le message digest}
\item[\hspace{6mm} -queryfile request.tsq]{La requête originale en DER}
\item[\hspace{6mm} -in response.tsr]{La réponse qui doit être vérifiée au format DER}
\item[\hspace{6mm} -token\_in]{avec -in, indique que l’entrée est un token DER (ContentInfo) au lie d’une réponse (TimeStampResp)}
\item[\hspace{6mm} -CApath trusted\_cert\_path]{Répertoire contenant Les certificats de CA du client}
\item[\hspace{6mm} -CAfile trusted\_certs.pem]{Le nom du fichier contenant un jeu de certificats PEM de ca}
\item[\hspace{6mm} -untrusted cert\_file.pem]{Définis des certificats non-trustés PEM qui peuvent être nécessaire pour créer une chaîne de certificat}
\end{description}
 
\vspace{1cm}{\huge Options de configuration }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} tsa section, default\_tsa]{Section principale. Spécifie le nom d’une autre section qui contient toutes les autres options pour la commande -reply}
\item[\hspace{1mm} oid\_file]{voir ca}
\item[\hspace{1mm} oid\_section]{voir ca}
\item[\hspace{1mm} RANDFILE]{voir ca}
\item[\hspace{1mm} serial]{Voir le nom du fichier qui contient le numéro de série héxa de la dernière réponse timestamp. il est incréménté de 1}
\item[\hspace{1mm} crypto\_device]{Moteur openssl par défaut pour tous les algorithmes disponibles}
\item[\hspace{1mm} signer\_cert PEM]{certificat de signature TSA (idem à -signer)}
\item[\hspace{1mm} certs]{Fichier contenant les certificats PEM à inclure dans la réponse (idem à -chain)}
\item[\hspace{1mm} signer\_key]{Clé privée du TSA en PEM}
\item[\hspace{1mm} default\_policy]{Stratégie par défaut (idem à -policy)}
\item[\hspace{1mm} other\_policies]{Liste de stratégies accèptés par le TSA}
\item[\hspace{1mm} digests]{Liste des algorithmes de messages digest accéptès par le TSA}
\item[\hspace{1mm} accuracy]{Source de précision du temps de TSA en secondes, millisecondes et microsecondes}
\item[\hspace{1mm} clock\_precision\_digits]{Nombre maximum de chiffre représentant la fraction de secondes à inclure dans le champs time (max : 6)}
\item[\hspace{1mm} ordering]{à yes, la réponse générée par ce TSA peut toujour être ordonnée, même si la différence de temps entre 2 réponses est inférieurs à la précision du temps}
\item[\hspace{1mm} tsa\_name]{à yes, le sujet du TSA doit est inclus dans le champs name de la réponse}
\item[\hspace{1mm} ess\_cert\_id\_chain]{les objets SignedData créés par le TSA contiennent toujours l’id du certificat du signataire dans l’attribut signed (RC2634)}
\end{description}
 
\vspace{1cm}{\huge Exemples }
 
\
 
\hspace{1mm} Créé une requêtes pour design.txt avec SHA-1 sans nonce ni stratégie ni certificat dans la réponse: \\
\hspace{1mm} \textbf{openssl ts -query -data design1.txt -no\_nonce -out design1.tsq} \\
\hspace{1mm} Similaire en spécifiant le digest: \\
\hspace{1mm} \textbf{openssl ts -query -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b -no\_nonce -out design1.tsq} \\
\hspace{1mm} Afficher le contenu des requêtes précédentes: \\
\hspace{1mm} \textbf{openssl ts -query -in design1.tsq -text} \\
\hspace{1mm} Créer une requête qui inclus MD5 de design2.txt, le certificat du signataire et nonce et spécifie la stratégie: \\
\hspace{1mm} \textbf{openssl ts -query -data design2.txt -md5 -policy tsa\_policy1 -cert -out design2.tsq} \\
\hspace{1mm} Créer une réponse: \\
\hspace{1mm} \textbf{openssl ts -reply -queryfile design1.tsq -inkey tsakey.pem -signer tsacert.pem -out design1.tsr} \\
\hspace{1mm} idem en utilisant les paramètres dans un fichierde configuration: \\
\hspace{1mm} \textbf{openssl ts -reply -queryfile design1.tsq -out design1.tsr} \\
\hspace{1mm} Afficher la réponse: \\
\hspace{1mm} \textbf{openssl ts -reply -in design1.tsr -text} \\
\hspace{1mm} Créer un token: \\
\hspace{1mm} \textbf{openssl ts -reply -queryfile design1.tsq -out design1\_token.der -token\_out} \\
\hspace{1mm} Afficher un token \\
\hspace{1mm} \textbf{openssl ts -reply -in design1\_token.der -token\_in -text -token\_out} \\
\hspace{1mm} Extraire le token d’un réponse: \\
\hspace{1mm} \textbf{openssl ts -reply -in design1.tsr -out design1\_token.der -token\_out} \\
\hspace{1mm} Ajouter le status ’granted à un token en crént une réponse valide: \\
\hspace{1mm} \textbf{openssl ts -reply -in design1\_token.der -token\_in -out design1.tsr} \\
\hspace{1mm} Vérifier une réponse avec la requête: \\
\hspace{1mm} \textbf{openssl ts -verify -queryfile design1.tsq -in design1.tsr -CAfile cacert.pem -untrusted tsacert.pem} \\
\hspace{1mm} Vérifier une réponse qui inclus la chaîne de certificat: \\
\hspace{1mm} \textbf{openssl ts -verify -queryfile design2.tsq -in design2.tsr -CAfile cacert.pem} \\
\hspace{1mm} Pour vérifier un token avec le fichier originel: \\
\hspace{1mm} \textbf{openssl ts -verify -data design2.txt -in design2.tsr -CAfile cacert.pem} \\
\hspace{1mm} Pour vérifier un token avec une empreinte: \\
\hspace{1mm} \textbf{openssl ts -verify -digest b7e5d3f93198b38379852f2c04e78d73abdd0f4b -in design2.tsr -CAfile cacert.pem} \\
\end{flushleft}
\end{document}
